package com.bridgeintelligent.tag.combination.mapper;

import com.bridgeintelligent.tag.combination.pojo.CombinationGroup;
import com.bridgeintelligent.tag.combination.pojo.Filter;
import com.bridgeintelligent.tag.combination.pojo.FilterGroup;
import com.bridgeintelligent.tag.webserver.dim.mgmt.api.DimCatalog;
import com.bridgeintelligent.tag.webserver.dim.mgmt.api.DimData;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;


/**
 * 组合标签筛选数据持久层
 */
@Mapper
public interface CombinationQueryModelMapper {


    /**
     * 新增筛选结果
     *
     * @param combinationGroup
     */
    void addQueryGroup(CombinationGroup combinationGroup);

    /**
     * 新增条件组
     *
     * @param filterGroupSet
     */
    void addFilterGroup(FilterGroup filterGroupSet);

    /**
     * 新增过滤条件
     *
     * @param filterSet
     */
    void addFilter(Filter filterSet);

    /**
     * 存入条件组和过滤条件关联关系
     *
     * @param map
     */
    void addFilterAndFilterGroup(Map<String, String> map);

    /**
     * 根据组合标签id查询筛选条件结果
     *
     * @param combinationId
     * @return
     */
    List<CombinationGroup> findListQueryGroup(String combinationId);

    /**
     * 根据id找标签名,用于回显
     *
     * @param field
     * @return
     */
    //String findDimNameById(String field);

    /**
     * 根据组合标签id查找条件组
     *
     * @param fgmap
     * @return
     */
    List<FilterGroup> findFilterGroup(Map<String, String> fgmap);

    /**
     * 根据条件组id查询条件id
     *
     * @param id
     * @return
     */
    List<String> findFilterIds(String id);

    /**
     * 根据id查找条件
     *
     * @param filterId
     * @return
     */
    Filter findOneFilterById(String filterId);

    /**
     * 根据id查询标签项名称
     *
     * @param map
     * @return
     */
    String findValueName(Map<String, String> map);

    /**
     * 根据客群id查询所有的条件组
     *
     * @param combinationId
     * @return
     */
    List<String> findFilterGroupBycombinationId(String combinationId);

    /**
     * 删除filter
     *
     * @param id
     */
    void delFilterById(String id);

    /**
     * 删除filtergroup与filter的关联关系
     *
     * @param filterId
     */
    void delFilterAndFilterGroup(String filterId);

    /**
     * 删除条件组
     *
     * @param combinationId
     */
    void delFilterGroup(String combinationId);

    /**
     * 删除条件组结果
     *
     * @param combinationId
     */
    void delQueryGroup(String combinationId);

    /**
     * 根据组号查询结果设置
     * @param map
     * @return
     */
    CombinationGroup findByIdNum(Map<String, String> map);

    /**
     * 根据目录名称查询ID
     * @param catalogName
     * @return
     */
    DimCatalog findByCatalogName(String catalogName);

    /**
     * 组合标签同步基础标签
     * @param dimData
     */
    void insertDimData(DimData dimData);


    void insertDimItem(String id ,String dimId,String itemNo,String itemName,String updateDate);

    /**
     * 查询组合标签的顶级组
     * @param map
     * @return
     */
    List<FilterGroup> findParentFilterGroup(Map<String, String> map);

    /**
     * 通过Parentid查询FilterGroup
     * @param parentId
     * @return
     */
    List<FilterGroup> findFGByParentId(String parentId);

    /**
     * 查询组合表i请安的所有Filter
     * @param combinationId
     * @return
     */
    List<Filter> findFilterById(String combinationId);

    /**
     * 查询单个组的所有Filter
     * @param filterGroupId
     * @return
     */
    List<Filter> findFilterByGroup(String filterGroupId);


}